<?php
/**
 * Clase Base DP para BaseMrpRecetaDP
 *
 * @package    
 * @subpackage BaseMrpRecetaDP
 * @author     Hans
 * @version    SVN:: BaseMrpRecetaDP.class.php,v 1.1 2012-03-07 02:01:11 Hans.Parra Exp $
 */
require($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/common/arrayClass.class.php');
require($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/mrp/recetas/BN/MrpRecetaBN.class.php');
abstract class BaseMrpRecetaDP extends MrpRecetaBN
{
  /* N�mero de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof MrpRecetaBN )
    {
      $o_MrpRecetaBN = $bSetDefault;
      if($o_MrpRecetaBN->getRctRecetaId()) : $this->setRctRecetaId($o_MrpRecetaBN->getRctRecetaId()); endif;
      if($o_MrpRecetaBN->getRctProductoId()) : $this->setRctProductoId($o_MrpRecetaBN->getRctProductoId()); endif;
      if($o_MrpRecetaBN->getRctDescripcion()) : $this->setRctDescripcion($o_MrpRecetaBN->getRctDescripcion()); endif;
      if($o_MrpRecetaBN->getRctDetalles()) : $this->setRctDetalles($o_MrpRecetaBN->getRctDetalles()); endif;
      if($o_MrpRecetaBN->getRctObservaciones()) : $this->setRctObservaciones($o_MrpRecetaBN->getRctObservaciones()); endif;      
      if($o_MrpRecetaBN->getRctTipoProducto()) : $this->setRctTipoProducto($o_MrpRecetaBN->getRctTipoProducto()); endif;
      if($o_MrpRecetaBN->getRctProductoCant()) : $this->setRctProductoCant($o_MrpRecetaBN->getRctProductoCant()); endif;
      if($o_MrpRecetaBN->getRctProductoUoM()) : $this->setRctProductoUoM($o_MrpRecetaBN->getRctProductoUoM()); endif;
      if($o_MrpRecetaBN->getRctPorcMerma()) : $this->setRctPorcMerma($o_MrpRecetaBN->getRctPorcMerma()); endif;
      if($o_MrpRecetaBN->getSysInsUsr()) : $this->setSysInsUsr($o_MrpRecetaBN->getSysInsUsr()); endif;
      if($o_MrpRecetaBN->getSysInsAt()) : $this->setSysInsAt($o_MrpRecetaBN->getSysInsAt()); endif;
      if($o_MrpRecetaBN->getSysLstUpdUsr()) : $this->setSysLstUpdUsr($o_MrpRecetaBN->getSysLstUpdUsr()); endif;
      if($o_MrpRecetaBN->getSysLstUpdAt()) : $this->setSysLstUpdAt($o_MrpRecetaBN->getSysLstUpdAt()); endif;
    }
  }

  /* Obtiene el n�mero de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con=$o_conexion->conectar();
      $this->setRctRecetaId($this->getSecuencia());
      if($this->getRctRecetaId()){
        $a_Fields = array();

        if($this->getRctRecetaId()) : $a_Fields['RCT_RECETAID'] = ($this->getRctRecetaId()); endif;
        if($this->getRctProductoId()) : $a_Fields['RCT_PRODUCTOID'] = ($this->getRctProductoId()); endif;
        if($this->getRctDescripcion()) : $a_Fields['RCT_DESCRIPCION'] = ($this->getRctDescripcion()); endif;
        if($this->getRctDetalles()) : $a_Fields['RCT_DETALLES'] = ($this->getRctDetalles()); endif;
        if($this->getRctObservaciones()) : $a_Fields['RCT_OBSERVACIONES'] = ($this->getRctObservaciones()); endif;
        if($this->getRctTipoProducto()) : $a_Fields['RCT_TIPOPRODUCTO'] = ($this->getRctTipoProducto()); endif;
        if($this->getRctProductoCant()) : $a_Fields['RCT_PRODUCTOCANT'] = ($this->getRctProductoCant()); endif;
        if($this->getRctProductoUoM()) : $a_Fields['RCT_PRODUCTOUOM'] = ($this->getRctProductoUoM()); endif;
        if($this->getRctPorcMerma()) : $a_Fields['RCT_PORCMERMA'] = ($this->getRctPorcMerma()); endif;
        if($this->getSysInsUsr()) : $a_Fields['SYSINSUSR'] = ($this->getSysInsUsr()); endif;
        if($this->getSysInsAt()) : $a_Fields['SYSINSAT'] = ($this->getSysInsAt()); endif;
        if($this->getSysLstUpdUsr()) : $a_Fields['SYSLSTUPDUSR'] = ($this->getSysLstUpdUsr()); endif;
        if($this->getSysLstUpdAt()) : $a_Fields['SYSLSTUPDAT'] = ($this->getSysLstUpdAt()); endif;

        $sStringField = arrayClass::implode_keys(',', $a_Fields);
        $sStringValue = "'".implode("','", $a_Fields)."'";

        $sql = "INSERT INTO mrp_receta (".$sStringField.") VALUES (".$sStringValue.");";
        $result = mysql_db_query('main_db', $sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($con);
        }
        else
        {
          throw new Exception( mysql_error($con) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function update()
  {
    try
    {
      if($this->getRctRecetaId())
      {
        $a_Fields = array();

        if($this->getRctRecetaId()) : $a_Fields['RCT_RECETAID'] = ($this->getRctRecetaId()); endif;
        if($this->getRctProductoId()) : $a_Fields['RCT_PRODUCTOID'] = ($this->getRctProductoId()); endif;
        if($this->getRctDescripcion()) : $a_Fields['RCT_DESCRIPCION'] = ($this->getRctDescripcion()); endif;
        if($this->getRctDetalles()) : $a_Fields['RCT_DETALLES'] = ($this->getRctDetalles()); endif;
        if($this->getRctObservaciones()) : $a_Fields['RCT_OBSERVACIONES'] = ($this->getRctObservaciones()); endif;
        if($this->getRctTipoProducto()) : $a_Fields['RCT_TIPOPRODUCTO'] = ($this->getRctTipoProducto()); endif;
        if($this->getRctProductoCant()) : $a_Fields['RCT_PRODUCTOCANT'] = ($this->getRctProductoCant()); endif;
        if($this->getRctProductoUoM()) : $a_Fields['RCT_PRODUCTOUOM'] = ($this->getRctProductoUoM()); endif;
        if($this->getRctPorcMerma()) : $a_Fields['RCT_PORCMERMA'] = ($this->getRctPorcMerma()); endif;
        if($this->getSysInsUsr()) : $a_Fields['SYSINSUSR'] = ($this->getSysInsUsr()); endif;
        if($this->getSysInsAt()) : $a_Fields['SYSINSAT'] = ($this->getSysInsAt()); endif;
        if($this->getSysLstUpdUsr()) : $a_Fields['SYSLSTUPDUSR'] = ($this->getSysLstUpdUsr()); endif;
        if($this->getSysLstUpdAt()) : $a_Fields['SYSLSTUPDAT'] = ($this->getSysLstUpdAt()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

				$o_conexion = new BaseDatos();
				$con=$o_conexion->conectar();
        $sql = "UPDATE mrp_receta SET ".$sStringField." WHERE 1 AND RCT_RECETAID='".$this->getRctRecetaId()."';";
        $result = mysql_db_query('main_db', $sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($con);
        }
        else
        {
          throw new Exception( mysql_error($con) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getRctRecetaId())
      {
        $a_Fields = array();

				$o_conexion = new BaseDatos();
				$con=$o_conexion->conectar();
        $sql = "DELETE FROM mrp_receta WHERE 1 AND RCT_RECETAID='".$this->getRctRecetaId()."';"; 
        $result = mysql_db_query('main_db', $sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($con);
        }
        else
        {
          throw new Exception( mysql_error($con) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* B�squeda del registro por la llave primaria */
  public static function selectByPK($vRctRecetaId)
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con=$o_conexion->conectar();
      $sql = "SELECT RCT_RECETAID, RCT_PRODUCTOID, RCT_DESCRIPCION, RCT_DETALLES,RCT_OBSERVACIONES , RCT_TIPOPRODUCTO, RCT_PRODUCTOCANT, RCT_PRODUCTOUOM, RCT_PORCMERMA, SYSINSUSR, SYSINSAT, SYSLSTUPDUSR, SYSLSTUPDAT FROM mrp_receta WHERE 1 AND RCT_RECETAID='".$vRctRecetaId."'; ";
      $result = mysql_db_query('main_db', $sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      
      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_MrpRecetaDP = new MrpRecetaDP();
    $o_MrpRecetaDP->setRctRecetaId($o_propel->RCT_RECETAID);
    $o_MrpRecetaDP->setRctProductoId($o_propel->RCT_PRODUCTOID);
    $o_MrpRecetaDP->setRctDescripcion($o_propel->RCT_DESCRIPCION);
    $o_MrpRecetaDP->setRctDetalles($o_propel->RCT_DETALLES);
    $o_MrpRecetaDP->setRctObservaciones($o_propel->RCT_OBSERVACIONES);    
    $o_MrpRecetaDP->setRctTipoProducto($o_propel->RCT_TIPOPRODUCTO);
    $o_MrpRecetaDP->setRctProductoCant($o_propel->RCT_PRODUCTOCANT);
    $o_MrpRecetaDP->setRctProductoUoM($o_propel->RCT_PRODUCTOUOM);
    $o_MrpRecetaDP->setRctPorcMerma($o_propel->RCT_PORCMERMA);
    $o_MrpRecetaDP->setSysInsUsr($o_propel->SYSINSUSR);
    $o_MrpRecetaDP->setSysInsAt($o_propel->SYSINSAT);
    $o_MrpRecetaDP->setSysLstUpdUsr($o_propel->SYSLSTUPDUSR);
    $o_MrpRecetaDP->setSysLstUpdAt($o_propel->SYSLSTUPDAT);
    return $o_MrpRecetaDP;
  }
}